bitkeeper revision 1.374 (3f1d4eb8Uq19CxRgaKAbW0xXMCqTxg)
authorkaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk>
Tue, 22 Jul 2003 14:48:24 +0000 (14:48 +0000)
committerkaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk>
Tue, 22 Jul 2003 14:48:24 +0000 (14:48 +0000)
Many files:
  IRQ cleanups. Note that EVENT_NET_TX and EVENT_NET_RX have been merged into a single EVENT_NET.

xen/drivers/block/xen_block.c
xen/drivers/char/xen_kbd.c
xen/include/hypervisor-ifs/hypervisor-if.h
xen/include/hypervisor-ifs/network.h
xen/net/dev.c
xenolinux-2.4.21-sparse/arch/xeno/drivers/block/xl_block.c
xenolinux-2.4.21-sparse/arch/xeno/drivers/network/network.c
xenolinux-2.4.21-sparse/include/asm-xeno/irq.h
xenolinux-2.4.21-sparse/include/asm-xeno/keyboard.h

index dfacec04952bb1a04e11151f2123480789fb6422..3ef15116dfb8b3ab82baf7ff45d7e9a5b907bb76 100644 (file)
@@ -828,7 +828,7 @@ static void make_response(struct task_struct *p, unsigned long id,
     spin_unlock_irqrestore(&p->blk_ring_lock, flags);
     
     /* Kick the relevant domain. */
-    cpu_mask = mark_guest_event(p, _EVENT_BLK_RESP);
+    cpu_mask = mark_guest_event(p, _EVENT_BLKDEV);
     guest_event_notify(cpu_mask); 
 }
 
index 01c4283704d96073a03d7f2c24952f8de101eb52..6aa4ca26db659b8d5432e42e14deb937fab2f175 100644 (file)
@@ -218,7 +218,7 @@ static void keyboard_interrupt(int irq, void *dev_id, struct pt_regs *regs)
         if ( p != NULL )
         {
             kbd_ring_push(status, scancode);
-            cpu_mask |= mark_guest_event(p, _EVENT_KBD);
+            cpu_mask |= mark_guest_event(p, _EVENT_PS2);
         }
     }
     
index fd91a7d57986ff79994af6372b064b21b80f2733..ab5ca7943a3e9d8e1eed28761ba4683a4009b60e 100644 (file)
  */
 
 /* Events that a guest OS may receive from the hypervisor. */
-#define EVENT_BLK_RESP 0x01 /* A block device response has been queued. */
+#define EVENT_BLKDEV   0x01 /* A block device response has been queued. */
 #define EVENT_TIMER    0x02 /* A timeout has been updated. */
 #define EVENT_DIE      0x04 /* OS is about to be killed. Clean up please! */
 #define EVENT_DEBUG    0x08 /* Request guest to dump debug info (gross!) */
-#define EVENT_NET_TX   0x10 /* There are packets for transmission. */
-#define EVENT_NET_RX   0x20 /* There are empty buffers for receive. */
-#define EVENT_KBD      0x40 /* PS/2 keyboard or mouse event(s) */
+#define EVENT_NET      0x10 /* There are packets for transmission. */
+#define EVENT_PS2      0x20 /* PS/2 keyboard or mouse event(s) */
 
 /* Bit offsets, as opposed to the above masks. */
-#define _EVENT_BLK_RESP 0
-#define _EVENT_TIMER   1
-#define _EVENT_DIE     2
-#define _EVENT_NET_TX  3
-#define _EVENT_NET_RX  4
-#define _EVENT_DEBUG   5
-#define _EVENT_KBD      6
+#define _EVENT_BLKDEV   0
+#define _EVENT_TIMER    1
+#define _EVENT_DIE      2
+#define _EVENT_DEBUG    3
+#define _EVENT_NET      4
+#define _EVENT_PS2      5
 
 /*
  * Virtual addresses beyond this are not modifiable by guest OSes.
index fe70c52eae7b238ecb9ddbe4aa0a539cada3bb4e..cd64f4fa730ce7c7479bce881169276b41ceff74 100644 (file)
@@ -69,9 +69,9 @@ typedef struct net_idx_st
 {
     /*
      * Guest OS places packets into ring at tx_req_prod.
-     * Guest OS receives DOMAIN_EVENT_NET_TX when tx_resp_prod passes tx_event.
+     * Guest OS receives EVENT_NET when tx_resp_prod passes tx_event.
      * Guest OS places empty buffers into ring at rx_req_prod.
-     * Guest OS receives DOMAIN_EVENT_NET_RX when rx_rssp_prod passes rx_event.
+     * Guest OS receives EVENT_NET when rx_rssp_prod passes rx_event.
      */
     unsigned int tx_req_prod, tx_resp_prod, tx_event;
     unsigned int rx_req_prod, rx_resp_prod, rx_event;
index 487d68ac5bd9989f58df1a1493d84c649439fe24..a0ba2c203e3774206f0965afd44af78d6575289e 100644 (file)
@@ -2023,7 +2023,7 @@ static void make_tx_response(net_vif_t     *vif,
     vif->tx_resp_prod = vif->shared_idxs->tx_resp_prod = pos;
     if ( pos == vif->shared_idxs->rx_event )
     {
-        unsigned long cpu_mask = mark_guest_event(vif->domain, _EVENT_NET_TX);
+        unsigned long cpu_mask = mark_guest_event(vif->domain, _EVENT_NET);
         guest_event_notify(cpu_mask);    
     }
     spin_unlock_irqrestore(&vif->tx_lock, flags);
@@ -2052,7 +2052,7 @@ static void make_rx_response(net_vif_t     *vif,
     vif->rx_resp_prod = vif->shared_idxs->rx_resp_prod = pos;
     if ( pos == vif->shared_idxs->rx_event )
     {
-        unsigned long cpu_mask = mark_guest_event(vif->domain, _EVENT_NET_RX);
+        unsigned long cpu_mask = mark_guest_event(vif->domain, _EVENT_NET);
         guest_event_notify(cpu_mask);    
     }
     spin_unlock_irqrestore(&vif->rx_lock, flags);
index 42f229462a57bc115884a13816a51cc6719a59f8..743ecd9be0b94d59184af3e4b9f2c6f454e4290f 100644 (file)
@@ -11,7 +11,7 @@
 
 typedef unsigned char byte; /* from linux/ide.h */
 
-#define XLBLK_RESPONSE_IRQ _EVENT_BLK_RESP
+#define XLBLK_RESPONSE_IRQ _EVENT_BLKDEV
 #define DEBUG_IRQ          _EVENT_DEBUG 
 
 static blk_ring_t *blk_ring;
@@ -573,7 +573,7 @@ int __init xlblk_init(void)
     blk_ring->req_prod = blk_ring->resp_prod = resp_cons = req_prod = 0;
     
     error = request_irq(XLBLK_RESPONSE_IRQ, xlblk_response_int, 
-                        SA_SAMPLE_RANDOM, "xlblk-response", NULL);
+                        SA_SAMPLE_RANDOM, "blkdev", NULL);
     if ( error )
     {
        printk(KERN_ALERT "Could not allocate receive interrupt\n");
index 4172166027dd18888c82e8b76ab403007e6ffc40..d14f08a8f13cad53a46069452e482cd4bc7ecf84 100644 (file)
@@ -25,8 +25,7 @@
 #include <net/sock.h>
 #include <net/pkt_sched.h>
 
-#define NET_TX_IRQ _EVENT_NET_TX
-#define NET_RX_IRQ _EVENT_NET_RX
+#define NET_IRQ _EVENT_NET
 
 #define TX_MAX_ENTRIES (TX_RING_SIZE - 2)
 #define RX_MAX_ENTRIES (RX_RING_SIZE - 2)
@@ -38,8 +37,7 @@
 
 #define RX_BUF_SIZE ((PAGE_SIZE/2)+1) /* Fool the slab allocator :-) */
 
-static void network_rx_int(int irq, void *dev_id, struct pt_regs *ptregs);
-static void network_tx_int(int irq, void *dev_id, struct pt_regs *ptregs);
+static void network_interrupt(int irq, void *dev_id, struct pt_regs *ptregs);
 static void network_tx_buf_gc(struct net_device *dev);
 static void network_alloc_rx_buffers(struct net_device *dev);
 static void network_free_rx_buffers(struct net_device *dev);
@@ -128,27 +126,16 @@ static int network_open(struct net_device *dev)
 
     network_alloc_rx_buffers(dev);
 
-    error = request_irq(NET_RX_IRQ, network_rx_int, 
-                        SA_SAMPLE_RANDOM, "net-rx", dev);
+    error = request_irq(NET_IRQ, network_interrupt, 
+                        SA_SAMPLE_RANDOM, "network", dev);
     if ( error )
     {
-        printk(KERN_WARNING "%s: Could not allocate receive interrupt\n",
+        printk(KERN_WARNING "%s: Could not allocate network interrupt\n",
                dev->name);
         network_free_rx_buffers(dev);
         goto fail;
     }
 
-    error = request_irq(NET_TX_IRQ, network_tx_int, 
-                        SA_SAMPLE_RANDOM, "net-tx", dev);
-    if ( error )
-    {
-        printk(KERN_WARNING "%s: Could not allocate transmit interrupt\n",
-               dev->name);
-        free_irq(NET_RX_IRQ, dev);
-        network_free_rx_buffers(dev);
-        goto fail;
-    }
-
     error = request_irq(_EVENT_DEBUG, dbg_network_int, SA_SHIRQ,
                         "debug", dev);
     if ( error )
@@ -213,7 +200,8 @@ static void network_tx_buf_gc(struct net_device *dev)
     spin_unlock_irqrestore(&np->tx_lock, flags);
 }
 
-inline pte_t *get_ppte(void *addr)
+
+static inline pte_t *get_ppte(void *addr)
 {
     pgd_t *pgd; pmd_t *pmd; pte_t *pte;
     pgd = pgd_offset_k(   (unsigned long)addr);
@@ -222,6 +210,7 @@ inline pte_t *get_ppte(void *addr)
     return pte;
 }
 
+
 static void network_alloc_rx_buffers(struct net_device *dev)
 {
     unsigned int i, id;
@@ -324,7 +313,7 @@ static int network_start_xmit(struct sk_buff *skb, struct net_device *dev)
 }
 
 
-static void network_rx_int(int irq, void *dev_id, struct pt_regs *ptregs)
+static void network_interrupt(int irq, void *dev_id, struct pt_regs *ptregs)
 {
     unsigned int i;
     struct net_device *dev = (struct net_device *)dev_id;
@@ -332,6 +321,8 @@ static void network_rx_int(int irq, void *dev_id, struct pt_regs *ptregs)
     struct sk_buff *skb;
     rx_resp_entry_t *rx;
     
+    network_tx_buf_gc(dev);
+
  again:
     for ( i  = np->rx_resp_cons; 
           i != np->net_idx->rx_resp_prod; 
@@ -390,13 +381,6 @@ static void network_rx_int(int irq, void *dev_id, struct pt_regs *ptregs)
 }
 
 
-static void network_tx_int(int irq, void *dev_id, struct pt_regs *ptregs)
-{
-    struct net_device *dev = (struct net_device *)dev_id;
-    network_tx_buf_gc(dev);
-}
-
-
 int network_close(struct net_device *dev)
 {
     netif_stop_queue(dev);
@@ -408,8 +392,7 @@ int network_close(struct net_device *dev)
      * no sensible way of retrieving them.
      */
 #if 0
-    free_irq(NET_RX_IRQ, dev);
-    free_irq(NET_TX_IRQ, dev);
+    free_irq(NET_IRQ, dev);
 
     network_free_rx_buffers(dev);
     kfree(np->net_ring->rx_ring);
index 4dbc7e6ed0addc2dab8b6502a8ac8bf05cb13a90..3a4a3e394f449289f969a0d097fde7b8879712ed 100644 (file)
 #include <asm/hypervisor.h>
 #include <asm/ptrace.h>
 
-#define NET_TX_IRQ  _EVENT_NET_TX
-#define NET_RX_IRQ  _EVENT_NET_RX
-#define NET2_TX_IRQ  _EVENT_NET2_TX
-#define NET2_RX_IRQ  _EVENT_NET2_RX
-#define TIMER_IRQ   _EVENT_TIMER
+#define TIMER_IRQ _EVENT_TIMER
 
 #define NR_IRQS (sizeof(HYPERVISOR_shared_info->events) * 8)
 
index edbd4e3f944b97de8b91bc3da377d58e365692fb..6d6461dfb9cf1e08f85145fdb6a7ad43e9586a51 100644 (file)
 #include <linux/pm.h>
 #include <asm/io.h>
 
-
-#define KEYBOARD_IRQ _EVENT_KBD
-#define AUX_IRQ _EVENT_KBD
-
-/* THIS SECTION RELATIVELY UNTOUCHED */
-
 extern int pckbd_setkeycode(unsigned int scancode, unsigned int keycode);
 extern int pckbd_getkeycode(unsigned int scancode);
 extern int pckbd_translate(unsigned char scancode, unsigned char *keycode,
@@ -60,8 +54,10 @@ static inline int xen_kbd_controller_present ()
 }
 
 /* resource allocation */
-#define kbd_request_region() do { } while (0)
-#define kbd_request_irq(handler) request_irq(_EVENT_KBD, handler, 0, "PS/2 kbd", NULL)
+#define kbd_request_region()     \
+    do { } while (0)
+#define kbd_request_irq(handler) \
+    request_irq(_EVENT_PS2, handler, 0, "ps/2", NULL)
 
 /* could implement these with command to xen to filter mouse stuff... */
 #define aux_request_irq(hand, dev_id) 0